package talayaco.dao;

import java.util.List;
import java.util.Map;

public interface ClienteDAO {

	/**
	 * Metodo que inserta un nuevo cliente en la base de datos
	 * 
	 * @return datosCliente Mapa con los datos del cliente a insertar
	 * @throws Exception
	 */
	public void insertCliente(Map<String, String> datosCliente)
			throws Exception;

	/**
	 * Elimina un cliente de la base de datos
	 * 
	 * @return nombreCliente nombre del cliente
	 * @throws Exception
	 */
	public void deleteCliente(String nombreCliente) throws Exception;

	/**
	 * Obtiene un cliente en base a su id
	 * 
	 * @param nombreCliente
	 *            Nombre del cliente
	 * @return Mapa con los datos del cliente
	 * @throws Exception
	 */
	public Map<String, String> getClienteByNombre(String nombreCliente)
			throws Exception;

	/**
	 * Obtiene la lista de cliente
	 * 
	 * @return Lista de mapas con los datos de los cliente
	 * @throws Exception
	 */
	public List<Map<String, String>> getClientes() throws Exception;

	/**
	 * Metodo que verifica si un cliente ya existe en la base de datos.
	 * 
	 * @param nombreCliente
	 *            Nombre del cliente
	 * @return 1 si encontro el cliente, 0 caso contrario
	 * @throws Exception
	 */
	public String existeCliente(String nombreCliente) throws Exception;

	/**
	 * Actualiza los datos del cliente.
	 * 
	 * @param datosCliente
	 *            Mapa con los datos del Cliente a actualizar
	 * @throws Exception
	 */
	public void updateCliente(Map<String, String> datosCliente)
			throws Exception;

	/**
	 * Metodo que valida que un cliente no posea movimientos asociados
	 * 
	 * @param nombreCliente
	 *            Nombre proveedor
	 * @return cantidad de movimientos
	 * @throws Exception
	 */
	Long validarMovimientosCliente(String nombreCliente) throws Exception;

}
